跳到主要内容

12 UART

up的视频讲解

按物理连接、波特率、数据帧和外设结构的顺序,看懂一串数据怎样从引脚发送出去。

1 UART 如何连接两个设备​

UART 是通用异步收发器。TX 用于发送,RX 用于接收:设备 A 的 TX 接设备 B 的 RX,反方向也按相同方式连接,同时建立共同的地参考。

两条独立的数据通路,让两个设备可以同时发送和接收。
两条独立的数据通路,让两个设备可以同时发送和接收。
工作方式同一时刻能做什么
全双工双方同时发送和接收
半双工双方轮流发送,同一时刻只有一方发送
单工只沿一个方向传输

课程芯片的 USART 外设支持异步通信。这里只使用异步收发功能,因此重点按 UART 的方式学习。

2 没有时钟线,如何约定速度​

同步通信通过独立时钟线协调收发;异步通信没有这条共享的时钟线,双方需要预先约定传输速率和帧格式。

异步通信依靠各自时钟与约定的位时间完成收发。
异步通信依靠各自时钟与约定的位时间完成收发。

波特率与位时间​

波特率表示每秒传输多少个码元。在本课 UART 的二电平信号中,一个码元表达一位数据,因此常用的 9600、115200 也对应相应的比特传输速率。

一位持续的时间 = 1 ÷ 波特率

把码元理解为线路上的信号,把比特理解为它所表示的信息。
把码元理解为线路上的信号,把比特理解为它所表示的信息。

有效数据速率还要扣除起始位、停止位等开销。例如,一个数据字节并不一定只占八个位时间。

电平也必须匹配​

接线正确、波特率一致,还不意味着电气连接一定正确。课程主控使用 3.3 V 逻辑信号,应确认串口模块的电平兼容性。USB 与 UART 的物理信号和协议不同,需要 CH340 等桥接芯片进行转换。

3 把一帧数据拆开看​

依次找到起始位、数据位、可选校验位和停止位。
依次找到起始位、数据位、可选校验位和停止位。
部分作用
起始位以低电平标记一帧开始
数据位携带要传输的数据
校验位可选,用于检查部分传输错误
停止位以高电平标记帧的结束

UART 线路空闲时为高电平。接收方检测起始变化后,按照约定的位时间判断后续数据。发送与接收双方的配置必须对应。

先按位时间划分波形,再判断每一格属于帧的哪一部分。
先按位时间划分波形,再判断每一格属于帧的哪一部分。

奇偶校验统计数据位与校验位中 1 的总数:偶校验使总数为偶数,奇校验使总数为奇数。它能够发现部分错误,但不能发现所有多位错误。

4 USART 外设怎样完成收发​

把框图分成收发通路、参数控制与波特率发生器三部分。
把框图分成收发通路、参数控制与波特率发生器三部分。

接收通路​

RX 上的串行信号经过采样和接收控制,进入接收移位寄存器。一个数据接收完成后,被送到数据寄存器,并通过 RXNE 等状态通知程序读取。

观察串行数据怎样逐位进入,再转成 CPU 可以读取的数据。
观察串行数据怎样逐位进入,再转成 CPU 可以读取的数据。

发送通路​

程序把数据写入发送数据寄存器,再由移位寄存器逐位发送。TXE 表示发送数据寄存器可以接收下一份数据,它与整帧已经发送完毕不是同一含义。

数据寄存器与移位寄存器分工,避免把“可以继续写”与“线路发送结束”混淆。
数据寄存器与移位寄存器分工,避免把“可以继续写”与“线路发送结束”混淆。

参数与时钟​

控制寄存器配置字长、停止位、校验等参数;波特率发生器根据外设时钟和分频设置产生收发所需的时序。

从外设时钟出发,沿分频关系找到收发时钟。
从外设时钟出发,沿分频关系找到收发时钟。

后面的实验会把这一过程接到电脑上:STM32 发送字节,CH340 完成桥接,串口助手把字节解释并显示出来。